/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

import controlador.Controlador;
import controlador.ControladorListener;
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import modelo.ModeloDatos;
import modelo.ModeloExperimento;
import modelo.ModeloGrafica;

/**
 *
 * @author juanan
 */
public class Experimento extends JPanel implements ControladorListener {

    private JTabbedPane tabPane;
    private ModeloExperimento mExp=new ModeloExperimento();

    public Experimento(ModeloExperimento mExp) {
        tabPane = new JTabbedPane();
        this.setLayout(new BorderLayout());
            
            tabPane.addTab("Poblacion 1", new Poblacion(
                    new ModeloGrafica(), new ModeloDatos()));
        
        this.add(tabPane,BorderLayout.CENTER);
        this.mExp=mExp;
        initListener();
    }
    
    private void initListener() {
        Controlador.getInstance().addControladorListener(this);
    }

    /**
     * @return the tabPane
     */
    public JTabbedPane getTabPane() {
        return tabPane;
    }

    /**
     * @param tabPane the tabPane to set
     */
    public void setTabPane(JTabbedPane tabPane) {
        this.tabPane = tabPane;
    }

    @Override
    public void abierto(ArrayList<ModeloGrafica> modeloGrafica, ArrayList<ModeloDatos> modeloDatos) {
        //TODO Crear tabPanned con los datos de las poblaciones abiertas
        tabPane.removeAll();
        
        for(int i=0; i<modeloDatos.size(); i++) {
            ModeloGrafica modelG = modeloGrafica.get(i);
            ModeloDatos modelD = modeloDatos.get(i);
            Poblacion pob=new Poblacion(modelG, modelD);
            pob.setM(modelG);
            pob.setmDatos(modelD);
            
            tabPane.add("Poblacion"+(i+1),pob);
         /*   
            JPanel panelCompleto = new JPanel(modelD, modelG);
            tabPane.add("", panel);*/
        }
    }

    /**
     * @return the mExp
     */
    public ModeloExperimento getmExp() {
        return mExp;
    }

    /**
     * @param mExp the mExp to set
     */
    public void setmExp(ModeloExperimento mExp) {
        this.mExp = mExp;
    }
}
